package forumreaction

type (
	ForumReactionStatus struct {
		Status int32 `json:"status"`
		Count  int64 `json:"count"`
	}
)

const (
	// 点赞操作，写入并自增，如果写入失败则不自增【原子性、幂等性】 10天过期，活跃延迟
	luaDoScript = `
if redis.call('SETNX',KEYS[1],1) == 1 then
  redis.call('EXPIRE',KEYS[1],864000)
  redis.call('INCR',KEYS[2])
  return redis.call('GET',KEYS[2])
end
return -1
`

	// 取消点赞操作，写入并递减，如果写入失败则不递减【原子性、幂等性】
	luaUndoScript = `
if redis.call('DEL',KEYS[1]) == 1 then
  redis.call('DECR',KEYS[2])
  return redis.call('GET',KEYS[2])
end
return -1
`

	luaInitScript = `
if redis.call('SETNX',KEYS[1],ARGV[1]) == 1 then
  redis.call('EXPIRE',KEYS[1],864000)
  return 1
end
return 0
`

	luaUpdateScript = `
if redis.call('SET',KEYS[1],ARGV[1]) == 1 then
  redis.call('EXPIRE',KEYS[1],864000)
  return 1
end
return 0
`
)
